#include <stdio.h>
#include <stdlib.h>
struct student
{
	char name[10];
	float cns; 
	float math; 
	float eng; 
}stu[100];
struct student fun(struct student stu[],int n,char c)
{
	int i,j;
	struct student p;
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			float sum_1=stu[j].math+stu[j].eng+stu[j].cns;
			float sum_2=stu[j+1].math+stu[j+1].eng+stu[j+1].cns;
			if(sum_1<sum_2)
			{
				struct student temp = stu[j];
				stu[j] = stu[j+1];
				stu[j+1] = temp;
			}
		}
	}
	//根据输入的字符变量不同来实现不同的功能 a->max b->min 
	switch(c)
	{
	case'a':
	p = stu[0];
	break;
	case'b':
	p = stu[n-1];
	break;
	}
	return p;//不同功能有不同的返回值 
}
int main()
{
	int n,i,j; 
	//输入部分 
	printf("有多少个学生？\n");
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		printf("\n输入姓名：");	
		getchar();
		fgets(stu[i].name,sizeof(stu[i].name),stdin);
		stu[i].name[strcspn(stu[i].name, "\n")] = 0;//使用strspn函数替换换行符'\n'为结束符'\0' 
		printf("\n输入语文成绩：");
		scanf ("%f",&stu[i].cns);
		printf("\n输入数学成绩：");	
		scanf ("%f",&stu[i].math);
		printf("\n输入英语成绩：");	
		scanf ("%f",&stu[i].eng);
	}
	//排序部分 
	struct student max=fun(stu,n,'a');
	struct student min=fun(stu,n,'b');
	//打印部分
	system("sls||scr"); 
	printf("成绩最好的是%s，最差的是%s\n",max.name,min.name);
	printf("总成绩单\n姓名\t语文\t数学\t英语\t总分\n");
	for(i=0;i<n;i++)
	{
		float sum[i];
		sum[i]=stu[i].cns+stu[i].math+stu[i].eng;
		printf("%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].name,stu[i].cns,stu[i].math,stu[i].eng,sum[i]);
	}
	return 0;
} 